package akcja;

import java.io.IOException;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import javax.servlet.ServletException;

import widok.Widok;

public class CzlowiekDodaj extends Akcja {

	private static final long serialVersionUID = -2730379362302276531L;

	@Override
	protected Widok wykonaj() throws IOException, ServletException, SQLException {
		if(!isZalogowany())
			throw new helper.Blad("Strona wymaga zalogowania się.");

		if (isPost) {
			String imie=request.getParameter("imie");
			String nazwisko=request.getParameter("nazwisko");
			DateFormat df = new SimpleDateFormat("yyyy-MM-DD");
			java.util.Date urodzony;
			java.util.Date zmarl;
			
			try {
				String tmp = request.getParameter("urodzony");
				if(tmp == null || tmp.trim().isEmpty() )
					urodzony=null;
				else
					urodzony = df.parse(tmp);
			} catch (ParseException e) {
				throw new helper.Blad("Niepoprawny format daty urodzenia, wpisz np. 2008-01-29");
			}
			try {
				String tmp = request.getParameter("zmarl");
				if(tmp == null || tmp.trim().isEmpty() )
					zmarl=null;
				else
					zmarl = df.parse(tmp);
			} catch (ParseException e) {
				throw new helper.Blad("Niepoprawny format daty śmierci, wpisz np. 2008-01-29 lub pozostaw pole puste");
			}
			if(zmarl != null && zmarl.before(urodzony))
				throw new helper.Blad("Aktor umarł przed narodzeniem?");
			
			String bio=request.getParameter("bio");
						
			java.sql.Date urodzonySql=new java.sql.Date(urodzony.getTime());
			java.sql.Date zmarlSql=(zmarl==null)?null:new java.sql.Date(zmarl.getTime());
			
			model.Czlowiek czlowiek=new model.Czlowiek(imie, nazwisko, urodzonySql, zmarlSql, bio);
			
			return new widok.Przekieruj("/czlowiek/zobacz?id="+czlowiek.getId());
		} else
			return new widok.Szablon("czlowiekdodaj.jsp", null);

	}
}
